Schakel 3 - De voel quiz

quiz

Schakel 3 de online quiz

De derde schakel is de schakel waar je moet voelen en een joytsick moet besturen. Het doel is om tenminste 3 van de 5 vragen juist te hebben zo niet dan moet de gebruiker opnieuw beginnen.


Details van Schakel 3

Vanaf de gebruiker bij de schakel komt zal deze direct zien op het lcd scherm: welkom bij de quiz. En de quiz kan je starten door met de joystick te bewegen. Heb dit gedaan met de functie if. Het programma controleert dan steeds of er beweging is. En als er dan bewinging is gaat het programma in actie. De eerste vraag is " Komt dit van marokko". Dan zal de gebruiker moeten voelen in de 3D geprintje doosjes ( Foto's beneden op de pagina ). En dan zit er bv in het doosje een specefieke noot in van Marokko. En dan is het bv juist dan moet de gebruiker aan de hand van de joystick omhoog of omlaag te bewegen het juist aan te duiden. De gebruiker moet dit 5 keer doen. Deze moet minstens 3/5 hebben. Zoniet moet deze opnieuw beginnen. De details van hoe ik de doos heb gemaakt kun je onderaan de pagina vinden.

Gebruikte Materialen

Stappenplan

  1. De Gebruiker heweegt de joystick
  2. De gebruiker voelt in de bakjes.
  3. De gebruiker vult de vragen in heeft de gebruiker minstens 3/5 dan kan deze doorgaan.

Code Voorbeeld


#include  // Wordt gebruikt voor communicatie te maken met I2C -> het dingetje die achter het lcd-scherm hangt.
#include  // Wordt gebruikt I2C lcd scherm aan te sturen, dit zorgt er bv voor dat er letters op het lcd scherm komen.


LiquidCrystal_I2C lcd(0x27, 20, 4); // I2C adres, en zeggen dat het een 20x4 lcd is. ( Dus een groot lcd-scherm ).

const int joystickX = A0; // Pin voor de X-as van de joystick, ofwel hier komen de pulsen als er beweging is van de joystick op x-as.
const int joystickY = A1; // Pin voor de Y-as van de joystick, ofwel hier komen de pulsen vanaf als er beweging is van de joystick op y-as.
const int buttonPin = 7;  // Pin voor de joystick knop, ofwel de button knop. Dus als je vanboven op de joystick drukt registreet deze dat.

int currentQuestion = 0; // Nummer van de vraag is nu 0.
int selectedOption = -1; 
bool correctAnswers[] = {true, false, true, false}; // De antwoorden zijn eerst waar dan vals dan juist en dan vals.
int score = 0; // De start score is 0.
bool quizStarted = false; // Geeft aan of de quiz is gestart.

void setup() { // De void setup
  pinMode(joystickX, INPUT); // Er wordt gezegd dat je x-as bewegingen van de joystick input is.
  pinMode(joystickY, INPUT); // Er wordt gezegd dat je y-as bewegingen van de joystick input is.
  pinMode(buttonPin, INPUT_PULLUP); // In de joystick zit er een weerstand, en hier wordt er gezegd dat deze input is.

  lcd.begin(); // Zeggen dat de lcd moet aangaan.( Dit gedeelte staat ook nog in de void setup want dit moet gebeuren vanaf er spanning is ).
  lcd.backlight(); // De achtergrondverlichting moet aangaan.
  lcd.clear(); // De lcd wordt zogezegd schoongemaakt, dit wil zeggen dat er niets meer op het lcd-scherm mag staan.
  lcd.print("Welkom bij de");// De lcd print "welkom bij de", dit gebeurt op het 0,0 postitie dus helemaal links vanboven.
  lcd.setCursor(0, 1); // Er wordt naar beneden opgeschoven.
  lcd.print("Quiz!"); // Op het eerste lijntje wordt er tergelijk "quiz" geschreven.
}

void loop() { // De loop is gestart.
  int joystickValueX = analogRead(joystickX); // Leest de analoge waarden van de x-as van de joystick. Int = met cijfers controleren van waardes.
  int joystickValueY = analogRead(joystickY); // Leest de analoge waarden van de y-as van de joystick. Int = met cijfers controleren van waardes.
  bool buttonState = digitalRead(buttonPin);  // Leest de status van de button op de joystick bool = Waar /  Vals

  if (!quizStarted && (joystickValueX < 100 || joystickValueX > 900 || joystickValueY < 100 || joystickValueY > 900)) { // Voorwaarden voor het starten van de quiz: X-as buiten het bereik van 100 tot 900 / Y-as buiten het bereik van 100 tot 900.
    quizStarted = true; // Start de quiz als de joystick wordt bewogen
    lcd.clear(); // Schoon de lcd mooi netjes op. Zodat er geen tekst meer opstaat.
    lcd.setCursor(0, 0); // Zet de cursor op 0,0 dus in de linkerbovenhoek.
    lcd.print("Quiz gestart!");// Print de quiz is gestart.
    delay(2000); // Wacht 2 seconden.
    displayQuestion(); // De eerste vraag wordt na de 2 seconden weergegeven.
  }
  if (quizStarted) { // Controleer of de voorwaarden goed zijn.
    lcd.setCursor(0, 3); // Zet de cursor linksonder.
    if (selectedOption == 1) { // Als de geslecteerde optie 1 is.
      lcd.print("Juist       ");// Print dan Juist.
    } else if (selectedOption == 0) { // Als de geslecteerde optie 2 is.
      lcd.print("Fout        "); // Print dan fout.
    } else {                     // Anders. 
      lcd.print("            "); // Print niets.
    }
  }

  if (quizStarted && buttonState == LOW) { // Als de button wordt ingedrukt en de voorwaardes van de quiz te laten starten zijn goed dan.
    if (selectedOption != -1) { // Als een optie is geselecteerd
      lcd.clear();
      if (selectedOption == correctAnswers[currentQuestion]) { // Als de geslecteerde optie juist is -> kijk naar de oplossingen [].
        lcd.print("Juist!"); //Print dan Juist
        score++; // Verhoog de score bij een juist antwoord.
      } else {   // Anders, dus als de geselecteerde optie fout is print dan fout. En tel niets bij.
        lcd.print("Fout!");// Print fout!.
      }
       delay(2000); // Wacht 2 seconden voordat de volgende vraag wordt weergegeven.
      selectedOption = -1; // Reset de geselecteerde optie naar "Nog geen keuze".
      currentQuestion++; 
      if (currentQuestion < 4) {
        displayQuestion(); // Toon de volgende vraag als er nog meer vragen zijn.
      } else {
        if (score >= 3) { // Als de bereikte score hoger is dan 3 of gelijk aan 3 doe dan dit:.
          lcd.clear();// Schoon de lcd op, dus geen tekst meer opzetten.
          lcd.print("Gefeliciteerd!");// En print gefeliciteerd.
          lcd.setCursor(0, 1);// Zet de cursor op de 1 e rij.
          lcd.print("Je kunt door naar"); // En print je kunt doorgaan naar.
          lcd.setCursor(0, 2);// Ga naar de tweede rij.
          lcd.print("de volgende ronde!");// En print op hetzelfde moment op een andere lijn dit " de volgende ronde".
          delay(5000); // Wacht 5 sec.
        }
        // Ga terug naar het welkomsscherm
        lcd.clear();//Schoon de lcd op, dus geen tekst meer opzetten.
        lcd.print("Welkom bij de");// En print welkom bij de.
        lcd.setCursor(0, 1); // Ga naar de 1e rij.
        lcd.print("Quiz!");// En print op hetzelfde moment op een andere lijn dit " quiz ".
        currentQuestion = 0; // Reset de vraagnummer
        score = 0; // Reset de score
        quizStarted = false; // Reset de quizstatus
        // Deze blok gaat terug naar het beginscherm en reset alles.
      }
    }
  }
  if (quizStarted) { // Als de quiz wordt gestart.
    if (joystickValueY > 900) { // Als joystick naar boven wordt bewogen
      selectedOption = 1; // Juist // Selecteer dan juist.
    } else if (joystickValueY < 100) { // Als joystick naar beneden wordt bewogen. ((y-as waarden) x-as is voor links of rechts.))
      selectedOption = 0; // Selecteer dan fout.
    }
  }
}

void displayQuestion() {
  lcd.clear(); //Schoon de lcd op, dus geen tekst meer opzetten.
  lcd.print("Vraag ");// Print " vraag".
  lcd.print(currentQuestion + 1);// Print het nummer van de vraag +1 staat er altijd omdat er wordt gestart bij 0.
  lcd.print(":");// Print de :.
  lcd.setCursor(0, 1); // Ga naar de tweede rij.
  if (currentQuestion == 0)// Als de nummer van de vraag 0 is: 
    lcd.print("Komt dit van Marroko"); // print dan komt dit van Marokko.
  else if (currentQuestion == 1)// Als de nummer van de vraag 1 is: 
    lcd.print("Komt dit van Belgie");// Print dan komt dit van Belgiƫ.
  else if (currentQuestion == 2)// Als de nummer van de vraag 2 is: 
    lcd.print("Komt dit van Amerika");// Print dan komt dan van Amerika.
  else if (currentQuestion == 3)// Als de nummer van de vraag 0 is: 
    lcd.print("Heet je Koen");  // Print dan heet je koen.
  lcd.setCursor(0, 3);// Zet de cursor op lijntje 3.
  lcd.print("Score: "); // print Score: 
  lcd.print(score); // Toon de huidige score.

    

Flowchart:

Foto's 3d prints

foto 1 foto 2 quiz

Vragen ?

Google forms

Handinge links

HOMEPAGINA Hoe heb ik de kist gemaakt.

Schakeling schema

quiz